跳到主要内容

事件

你可以利用绑定为控件添加事件

local panel = base.ui.panel {
array = 10,

base.ui.button {
bind = {
event = {
on_click = 'on_click',
},
},
},
}
local ui, bind = base.ui.create(panel)
for i = 1, 10 do
bind.on_click[i] = function ()
print(('第[%s]个按钮被点击'):format(i))
end
end

下面会介绍所有的事件,为了简便起见,例子里假定所有的事件名与绑定名是相同的。

on_mouse_enter

鼠标进入

bind.on_mouse_enter = function ()
end

on_mouse_leave

鼠标离开

bind.on_mouse_leave = function ()
end

on_mouse_down

鼠标按钮按下

bind.on_mouse_down = function ()
end

on_mouse_up

鼠标按钮抬起

bind.on_mouse_up = function ()
end

on_click

点击(在控件内鼠标按键按下后抬起时触发)

bind.on_click = function ()
end

on_double_click

双击(PC only)

bind.on_double_click = function()
end

on_long_click

长按

长按事件触发后,点击事件不会被触发

bind.on_long_click = function ()
end

可以通过 base.ui.event.set_long_click_timeout 来修改触发长按的延迟事件,单位为毫秒

base.ui.event.set_long_click_timeout(500)

on_long_click_release

长按松开

触发了长按事件之后才会触发长按松开事件

bind.on_long_click_release = function ()
end

on_input

输入框文本变化事件

bind.on_input = function(text)
print(text)
end

on_focus

输入框获取焦点

on_focus_lose

输入框失去焦点

on_drag

拖动

当开始拖动控件时触发。 需要指定属性 enable_drag = true

bind.on_drag = function ()
end

on_drop/on_dropped

松开拖动的控件,会在松开控件的时候触发,拥有一个参数 target,代表松开鼠标时鼠标所指向的控件。

松开鼠标时,鼠标指向的控件需要指定属性 enable_drop = true 才会触发此事件,否则会触发 on_throw 事件。

on_drop 事件的触发控件对象是被拖动的控件。

target 控件则会触发 on_dropped,拥有一个参数 source ,代表被拖动的控件

bind.on_drop = function (target)
print('控件被拖动到了' .. target.name)
end
bind.on_dropped = function (source)
print('控件' .. source .. '被拖放了!')
end

on_throw

当控件被拖放到空白区域上或没有指定 enable_drop = true 的控件上时,会触发此事件

bind.on_throw = function ()
end